package com.controller;

import com.service.DeepSeekService;
import com.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * DeepSeek AI 控制器
 */
@RestController
@RequestMapping("/api/deepseek")
public class DeepSeekController {
    
    @Autowired
    private DeepSeekService deepSeekService;
    
    /**
     * 聊天接口
     * @param message 用户消息
     * @param systemPrompt 系统提示词（可选）
     * @return AI回复
     */
    @PostMapping("/chat")
    public R chat(@RequestParam String message, 
                  @RequestParam(required = false) String systemPrompt) {
        try {
            String response = deepSeekService.getChatResponse(message, systemPrompt);
            return R.ok().put("data", response);
        } catch (Exception e) {
            return R.error("AI服务暂时不可用: " + e.getMessage());
        }
    }
    
    /**
     * 健康饮食建议
     * @param userInfo 用户信息（身高、体重、年龄等）
     * @param healthCondition 健康状况
     * @return 个性化饮食建议
     */
    @PostMapping("/diet-advice")
    public R getDietAdvice(@RequestParam String userInfo, 
                          @RequestParam(required = false) String healthCondition) {
        try {
            String systemPrompt = "你是一个专业的营养师，请根据用户的个人信息和健康状况，提供科学、实用的饮食建议。";
            String userMessage = String.format("用户信息：%s，健康状况：%s，请为我提供个性化的饮食建议。", 
                    userInfo, healthCondition != null ? healthCondition : "无特殊状况");
            
            String advice = deepSeekService.getChatResponse(userMessage, systemPrompt);
            return R.ok().put("data", advice);
        } catch (Exception e) {
            return R.error("获取饮食建议失败: " + e.getMessage());
        }
    }
    
    /**
     * 运动建议
     * @param userInfo 用户信息
     * @param fitnessGoal 健身目标
     * @return 个性化运动建议
     */
    @PostMapping("/exercise-advice")
    public R getExerciseAdvice(@RequestParam String userInfo, 
                              @RequestParam(required = false) String fitnessGoal) {
        try {
            String systemPrompt = "你是一个专业的健身教练，请根据用户的个人信息和健身目标，提供科学、安全的运动建议。";
            String userMessage = String.format("用户信息：%s，健身目标：%s，请为我制定合适的运动计划。", 
                    userInfo, fitnessGoal != null ? fitnessGoal : "保持健康");
            
            String advice = deepSeekService.getChatResponse(userMessage, systemPrompt);
            return R.ok().put("data", advice);
        } catch (Exception e) {
            return R.error("获取运动建议失败: " + e.getMessage());
        }
    }
    
    /**
     * 食谱推荐
     * @param ingredients 现有食材
     * @param dietaryRestrictions 饮食限制
     * @return 食谱推荐
     */
    @PostMapping("/recipe-recommendation")
    public R getRecipeRecommendation(@RequestParam String ingredients, 
                                   @RequestParam(required = false) String dietaryRestrictions) {
        try {
            String systemPrompt = "你是一个专业的厨师，请根据用户现有的食材和饮食限制，推荐合适的食谱，包括制作步骤和营养信息。";
            String userMessage = String.format("现有食材：%s，饮食限制：%s，请推荐适合的食谱。", 
                    ingredients, dietaryRestrictions != null ? dietaryRestrictions : "无特殊限制");
            
            String recommendation = deepSeekService.getChatResponse(userMessage, systemPrompt);
            return R.ok().put("data", recommendation);
        } catch (Exception e) {
            return R.error("获取食谱推荐失败: " + e.getMessage());
        }
    }
}
